Docker 安装单机KingbaseES
1 背景知识
本节将会指导用户在Docker 上安装部署 200-Areas/Kingbase/Kingbase 数据库。
1.1 准备工作
node2虚拟机还原至【Docker Images Install】场景。
1.2 实验环境说明
宿主机OS信息。
| 类别 | 目标端 |
|---|---|
| IP | 192.168.40.111 |
| 主机名 | node1 |
| os用户 | root/kingbase.123 docker/docker |
1.3 书写约定
| 提示符 | 说明 |
|---|---|
| $ | 宿主机Docker 用户所执行的命令。 |
| <container>$ | 容器内部kingbase 用户所执行的命令。 |
| test# | 数据库ksql 所执行的命令。 |
| root# | 宿主机root故所执行的命令。 |
| <container># | 容器内部root 用户所执行的命令。 |
2 环境准备
2.1 创建宿主机软件存储目录
#root>
mkdir -p /hostsoft
2.2 上传安装所需的文件到宿主机
cd /hostsoft
ls -l
install.properties KingbaseES_V008R006C005B0023_Lin64_single_install.iso license_12350_0_dev.dat
编者注:文件使用说明。
| 文件 | 说明 |
|---|---|
| install.properties | Kingbase数据库静默安装配置文件。 |
| license_12350_0_dev.dat | 开发版licence文件。 |
| KingbaseES_V008R006C005B0023_Lin64_single_install.iso | Kingbase数据库单机安装包。 |
2.3 准备安装介质文件
- 挂载光盘镜像文件。
root# mount /hostsoft/KingbaseES_V008R006C005B0023_Lin64_single_install.iso /mnt |
- 解压ISO文件。
root# cp -R /mnt/* /hostsoft
root# exit
2.4 更改安装介质目录权限
root# chown -R docker:docker /hostsoft
3 准备kingbase 数据库所需的容器
3.1 创建容器
1、列出本地已下载的镜像列表。
$ docker images
//屏幕输出:
REPOSITORY TAG IMAGE ID CREATED SIZE hub-mirror.c.163.com/library/centos centos8.4.2105 5d0da3dc9764 17 months ago 231MB centos 7.2.1511 9aec5c5fe4ba 3 years ago 195MB
2、创建并启动kes01容器,并以守护进程方式运行。
$ docker run -h kes01 --privileged=true -itd -v /hostsoft:/vmsoft --name kes01 centos:7.2.1511 /sbin/init
//屏幕输出:
8a22bdb855862dcb6a63c866338953720353387bd5b88dcc1486f7fa863b60c1
3.2 创建容器内部用户
- 登录容器。
$ docker exec -it kes01 /bin/bash
- 创建用户kingbase。
<container># useradd kingbase
<container\># ls /home/kingbase
<container\># id kingbase
//屏幕输出:
uid=1000(kingbase) gid=1000(kingbase) groups=1000(kingbase) `
- 退出容器。
<container># exit
3.3 查看容器的运行状态
$ docker ps
//屏幕输出:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0699502f2038 centos:7.2.1511 "/sbin/init" 28 seconds ago Up 27 seconds kingbase
3.4 登陆容器对数据卷目录授权
- 登陆容器。
$ docker exec -it kes01 /bin/bash
- 查看数据卷目录下的文件。
<container># ls /vmsoft
//屏幕输出: install.properties KingbaseES_V008R006C005B0023_Lin64_single_install.iso license_12350_0_dev.dat
- 授权kingbase用户使用数据卷目录。
<container># chown -R kingbase.kingbase /vmsoft/
<container># chmod -R u=rwx /vmsoft/
<container># exit
4 安装KES软件
4.1 静默安装数据库软件
- 使用kingbase用户登陆容器。
$ docker exec -u kingbase -it kes01 /bin/bash
- 进入安装包所在目录。
<container>$ cd /vmsoft
- 执行静默安装。
<container>$ ./setup.sh -i silent -f /vmsoft/install.properties
//屏幕输出:
Now launch installer...
Complete.
4.2 设置PATH环境变量
1、定位bin目录。
<container>$ find /home/kingbase/KingbaseES/V8/ -name initdb
//屏幕输出:
/home/kingbase/KingbaseES/V8/Server/bin/initdb
2、将bin目录添加到环境配置文件中。
<container>$ vi /home/kingbase/.bashrc
--------------写入以下内容-------------------
export PATH=/home/kingbase/KingbaseES/V8/Server/bin:\$PATH
<container>$ cat /home/kingbase/.bashrc
//屏幕输出:
# .bashrc
# Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi
# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=
# User specific aliases and functions export PATH=/home/kingbase/KingbaseES/V8/Server/bin:\$PATH
3、让环境变量的新值生效。
<container>$ source /home/kingbase/.bashrc
<container>$ env|grep PATH
//屏幕输出: PATH=/home/kingbase/KingbaseES/V8/Server/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
4.3 设置KINGBASE_DATA环境变量
1、配置KINGBASE_DATA环境变量。
<container>$ vi /home/kingbase/.bashrc
--------------写入以下内容-------------------
export KINGBASE_DATA=/home/kingbase/data
<container>$ cat /home/kingbase/.bashrc
//屏幕输出:
# .bashrc
# Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi
# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=
# User specific aliases and functions export PATH=/home/kingbase/KingbaseES/V8/Server/bin:\$PATH export KINGBASE_DATA=/home/kingbase/data
2、生效环境变量。
<container>$ source /home/kingbase/.bashrc
<container>$ env|grep KINGBASE_DATA
//屏幕输出:
KINGBASE_DATA=/home/kingbase/data
5 LAB04-创建数据库集簇
<container>$ initdb -U SYSTEM -W -m ORACLE -E UTF8 -D /home/kingbase/data
//屏幕输出:
The files belonging to this database system will be owned by user "kingbase".
This user must also own the server process.
The database cluster will be initialized with locale "C".
The default text search configuration will be set to "english".
The comparision of strings is case-sensitive. Data page checksums are disabled.
Enter new superuser password:我们将密码指定为kingbase
Enter it again: creating directory /home/kingbase/data ...
ok creating subdirectories ...
ok selecting dynamic shared memory implementation ...
posix selecting default max_connections ...
100 selecting default shared_buffers ...
128MB selecting default time zone ...
UTC creating configuration files ...
ok Begin setup encrypt device initializing the encrypt device ...
ok running bootstrap script ...
ok performing post-bootstrap initialization ...
ok create security database ...
ok load security database ...
ok syncing data to disk ...
ok initdb:
warning: enabling "trust" authentication for local connections You can change this by editing sys_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. Success. You can now start the database server using:
sys_ctl -D /home/kingbase/data -l logfile start
6 LAB05-安装license并启动KES
6.1 安装license
<container>$ cp /vmsoft/license_12350_0_dev.dat home/kingbase/KingbaseES/V8/license.dat
6.2 启动KES数据库
<container>$ sys_ctl start
6.3 验证KES 是否能够登陆
- 登陆容器中的KES数据库。
<container>$ ksql test system
ksql (V8.0) Type "help" for help.
test=#
- 执行SQL语句。
test=#
SELECT get_license_validdays();
get_license_validdays
-----------------------
-2
(1 row)
7 容器瘦身
- 清理/KingbaseES/V8等目录下不需要的文件。
$ docker exec -u kingbase -it kes01 /bin/bash
<container># cd /home/kingbase/KingbaseES/V8/
<container># du -sm \* \| sort -n
1 control.so
1 desktops
1 license.dat
1 LICENSE_EN
1 LICENSE_ZH
1 Scripts
3 Logs
13 ClientTools
35 Help.tar.gz
37 Help
50 xulrunner
187 jre
260 Server
308 Interface
359 ManagerTools
360 DtsTools
814 Uninstall
- 删除不需要的文件
<container># rm -rf ManagerTools DtsTools Uninstall Interface
- 退出容器环境返回宿主机。
<container># exit
8 制作kingbase 数据库镜像
8.1 列出本地镜像清单
$ docker images
8.2 以commit的方式将容器的变化内容进行整合
- 查看容器名称、容器ID。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8a22bdb85586 centos:7.2.1511 "/bin/bash" 12 minutes ago Up 12 minutes vm01
- 执行docker commit生成新的镜像。
docker commit -m "制作kingbaes 数据镜像。" -a "kingbase" kes01 kesimg:0916
sha2 56:64 f5d37302701a82343377c35195096b2e87ee0db182ee0fa68ffbc27150b45a
编者注:0916 需要替换成自己的身份证后四位。
8.2.1 STEP03:查看新生成的镜像
1、列出镜像清单。
$ docker images
2、查看新镜像的详细信息。
$ docker image inspect -f {{".RepoTags"}} kesimg:0916
$ docker image inspect -f {{".Comment"}} kesimg:0916
$ docker image inspect -f {{".Created"}} kesimg:0916
$ docker image inspect -f {{".ContainerConfig"}} kesimg:0916
$ docker image inspect -f {{".DockerVersion"}} kesimg:0916
$ docker image inspect -f {{".Author"}} kesimg:0916
$ docker image inspect -f {{".Config"}} kesimg:0916
$ docker image inspect -f {{".Architecture"}} kesimg:0916
$ docker image inspect -f {{".Os"}} kesimg:0916
$ docker image inspect -f {{".Size"}} kesimg:0916